// Generated from src/loader/sql/grammar/SQLLexer.g4 by ANTLR 4.9.0-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN.js";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer.js";
import { CharStream } from "antlr4ts/CharStream.js";
import { Lexer } from "antlr4ts/Lexer.js";
import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator.js";
import { NotNull } from "antlr4ts/Decorators.js";
import { Override } from "antlr4ts/Decorators.js";
import { RuleContext } from "antlr4ts/RuleContext.js";
import { Vocabulary } from "antlr4ts/Vocabulary.js";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl.js";

import * as Utils from "antlr4ts/misc/Utils.js";


export class SQLLexer extends Lexer {
	public static readonly ID = 1;
	public static readonly LINE_COMMENT = 2;
	public static readonly OPEN_COMMENT = 3;
	public static readonly S_REQUIRED_MARK = 4;
	public static readonly WORD = 5;
	public static readonly EOF_STATEMENT = 6;
	public static readonly WSL = 7;
	public static readonly STRING = 8;
	public static readonly DOLLAR_STRING = 9;
	public static readonly PARAM_MARK = 10;
	public static readonly WS = 11;
	public static readonly TRANSFORM_ARROW = 12;
	public static readonly SPREAD = 13;
	public static readonly NAME_TAG = 14;
	public static readonly TYPE_TAG = 15;
	public static readonly OB = 16;
	public static readonly CB = 17;
	public static readonly COMMA = 18;
	public static readonly C_REQUIRED_MARK = 19;
	public static readonly ANY = 20;
	public static readonly CLOSE_COMMENT = 21;
	public static readonly DOLLAR = 22;
	public static readonly CAST = 23;
	public static readonly COMMENT = 1;

	// tslint:disable:no-trailing-whitespace
	public static readonly channelNames: string[] = [
		"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
	];

	// tslint:disable:no-trailing-whitespace
	public static readonly modeNames: string[] = [
		"DEFAULT_MODE", "COMMENT",
	];

	public static readonly ruleNames: string[] = [
		"QUOT", "ID", "LINE_COMMENT", "OPEN_COMMENT", "SID", "S_REQUIRED_MARK",
		"WORD", "SPECIAL", "DOLLAR", "EOF_STATEMENT", "WSL", "STRING", "DOLLAR_STRING",
		"PARAM_MARK", "CAST", "CID", "WS", "TRANSFORM_ARROW", "SPREAD", "NAME_TAG",
		"TYPE_TAG", "OB", "CB", "COMMA", "C_REQUIRED_MARK", "ANY", "CLOSE_COMMENT",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, undefined, undefined, "'/*'", undefined, undefined, "';'",
		undefined, undefined, undefined, "':'", undefined, "'->'", "'...'", "'@name'",
		"'@param'", "'('", "')'", "','", undefined, undefined, "'*/'", "'$'",
		"'::'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, "ID", "LINE_COMMENT", "OPEN_COMMENT", "S_REQUIRED_MARK", "WORD",
		"EOF_STATEMENT", "WSL", "STRING", "DOLLAR_STRING", "PARAM_MARK", "WS",
		"TRANSFORM_ARROW", "SPREAD", "NAME_TAG", "TYPE_TAG", "OB", "CB", "COMMA",
		"C_REQUIRED_MARK", "ANY", "CLOSE_COMMENT", "DOLLAR", "CAST",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(SQLLexer._LITERAL_NAMES, SQLLexer._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return SQLLexer.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace


	constructor(input: CharStream) {
		super(input);
		this._interp = new LexerATNSimulator(SQLLexer._ATN, this);
	}

	// @Override
	public get grammarFileName(): string { return "SQLLexer.g4"; }

	// @Override
	public get ruleNames(): string[] { return SQLLexer.ruleNames; }

	// @Override
	public get serializedATN(): string { return SQLLexer._serializedATN; }

	// @Override
	public get channelNames(): string[] { return SQLLexer.channelNames; }

	// @Override
	public get modeNames(): string[] { return SQLLexer.modeNames; }

	public static readonly _serializedATN: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\x19\xCA\b\x01" +
		"\b\x01\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06" +
		"\t\x06\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f" +
		"\x04\r\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04" +
		"\x12\t\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04" +
		"\x17\t\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04" +
		"\x1C\t\x1C\x03\x02\x03\x02\x03\x03\x03\x03\x07\x03?\n\x03\f\x03\x0E\x03" +
		"B\v\x03\x03\x04\x03\x04\x03\x04\x03\x04\x07\x04H\n\x04\f\x04\x0E\x04K" +
		"\v\x04\x03\x04\x05\x04N\n\x04\x03\x04\x03\x04\x03\x05\x03\x05\x03\x05" +
		"\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\b" +
		"\x06\b^\n\b\r\b\x0E\b_\x03\t\x06\tc\n\t\r\t\x0E\td\x03\t\x03\t\x03\n\x03" +
		"\n\x03\n\x03\n\x03\v\x03\v\x03\f\x06\fp\n\f\r\f\x0E\fq\x03\f\x03\f\x03" +
		"\r\x03\r\x03\r\x07\ry\n\r\f\r\x0E\r|\v\r\x03\r\x03\r\x05\r\x80\n\r\x03" +
		"\x0E\x03\x0E\x05\x0E\x84\n\x0E\x03\x0E\x03\x0E\x07\x0E\x88\n\x0E\f\x0E" +
		"\x0E\x0E\x8B\v\x0E\x03\x0E\x03\x0E\x05\x0E\x8F\n\x0E\x03\x0E\x03\x0E\x03" +
		"\x0F\x03\x0F\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03" +
		"\x11\x03\x11\x03\x12\x06\x12\x9F\n\x12\r\x12\x0E\x12\xA0\x03\x12\x03\x12" +
		"\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15" +
		"\x03\x15\x03\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16" +
		"\x03\x16\x03\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x19\x03\x19\x03\x1A" +
		"\x03\x1A\x03\x1B\x06\x1B\xC2\n\x1B\r\x1B\x0E\x1B\xC3\x03\x1C\x03\x1C\x03" +
		"\x1C\x03\x1C\x03\x1C\x04z\xC3\x02\x02\x1D\x04\x02\x02\x06\x02\x03\b\x02" +
		"\x04\n\x02\x05\f\x02\x02\x0E\x02\x06\x10\x02\x07\x12\x02\x02\x14\x02\x18" +
		"\x16\x02\b\x18\x02\t\x1A\x02\n\x1C\x02\v\x1E\x02\f \x02\x19\"\x02\x02" +
		"$\x02\r&\x02\x0E(\x02\x0F*\x02\x10,\x02\x11.\x02\x120\x02\x132\x02\x14" +
		"4\x02\x156\x02\x168\x02\x17\x04\x02\x03\b\x05\x02C\\aac|\x06\x022;C\\" +
		"aac|\x04\x02\f\f\x0F\x0F\n\x02$%\'(*1>B]]_`bb}\x80\x05\x02\v\f\x0F\x0F" +
		"\"\"\x03\x02^^\x02\xD3\x02\b\x03\x02\x02\x02\x02\n\x03\x02\x02\x02\x02" +
		"\f\x03\x02\x02\x02\x02\x0E\x03\x02\x02\x02\x02\x10\x03\x02\x02\x02\x02" +
		"\x12\x03\x02\x02\x02\x02\x14\x03\x02\x02\x02\x02\x16\x03\x02\x02\x02\x02" +
		"\x18\x03\x02\x02\x02\x02\x1A\x03\x02\x02\x02\x02\x1C\x03\x02\x02\x02\x02" +
		"\x1E\x03\x02\x02\x02\x02 \x03\x02\x02\x02\x03\"\x03\x02\x02\x02\x03$\x03" +
		"\x02\x02\x02\x03&\x03\x02\x02\x02\x03(\x03\x02\x02\x02\x03*\x03\x02\x02" +
		"\x02\x03,\x03\x02\x02\x02\x03.\x03\x02\x02\x02\x030\x03\x02\x02\x02\x03" +
		"2\x03\x02\x02\x02\x034\x03\x02\x02\x02\x036\x03\x02\x02\x02\x038\x03\x02" +
		"\x02\x02\x04:\x03\x02\x02\x02\x06<\x03\x02\x02\x02\bC\x03\x02\x02\x02" +
		"\nQ\x03\x02\x02\x02\fV\x03\x02\x02\x02\x0EZ\x03\x02\x02\x02\x10]\x03\x02" +
		"\x02\x02\x12b\x03\x02\x02\x02\x14h\x03\x02\x02\x02\x16l\x03\x02\x02\x02" +
		"\x18o\x03\x02\x02\x02\x1Au\x03\x02\x02\x02\x1C\x81\x03\x02\x02\x02\x1E" +
		"\x92\x03\x02\x02\x02 \x94\x03\x02\x02\x02\"\x99\x03\x02\x02\x02$\x9E\x03" +
		"\x02\x02\x02&\xA4\x03\x02\x02\x02(\xA7\x03\x02\x02\x02*\xAB\x03\x02\x02" +
		"\x02,\xB1\x03\x02\x02\x02.\xB8\x03\x02\x02\x020\xBA\x03\x02\x02\x022\xBC" +
		"\x03\x02\x02\x024\xBE\x03\x02\x02\x026\xC1\x03\x02\x02\x028\xC5\x03\x02" +
		"\x02\x02:;\x07)\x02\x02;\x05\x03\x02\x02\x02<@\t\x02\x02\x02=?\t\x03\x02" +
		"\x02>=\x03\x02\x02\x02?B\x03\x02\x02\x02@>\x03\x02\x02\x02@A\x03\x02\x02" +
		"\x02A\x07\x03\x02\x02\x02B@\x03\x02\x02\x02CD\x07/\x02\x02DE\x07/\x02" +
		"\x02EI\x03\x02\x02\x02FH\n\x04\x02\x02GF\x03\x02\x02\x02HK\x03\x02\x02" +
		"\x02IG\x03\x02\x02\x02IJ\x03\x02\x02\x02JM\x03\x02\x02\x02KI\x03\x02\x02" +
		"\x02LN\x07\x0F\x02\x02ML\x03\x02\x02\x02MN\x03\x02\x02\x02NO\x03\x02\x02" +
		"\x02OP\x07\f\x02\x02P\t\x03\x02\x02\x02QR\x071\x02\x02RS\x07,\x02\x02" +
		"ST\x03\x02\x02\x02TU\b\x05\x02\x02U\v\x03\x02\x02\x02VW\x05\x06\x03\x02" +
		"WX\x03\x02\x02\x02XY\b\x06\x03\x02Y\r\x03\x02\x02\x02Z[\x07#\x02\x02[" +
		"\x0F\x03\x02\x02\x02\\^\t\x03\x02\x02]\\\x03\x02\x02\x02^_\x03\x02\x02" +
		"\x02_]\x03\x02\x02\x02_`\x03\x02\x02\x02`\x11\x03\x02\x02\x02ac\t\x05" +
		"\x02\x02ba\x03\x02\x02\x02cd\x03\x02\x02\x02db\x03\x02\x02\x02de\x03\x02" +
		"\x02\x02ef\x03\x02\x02\x02fg\b\t\x04\x02g\x13\x03\x02\x02\x02hi\x07&\x02" +
		"\x02ij\x03\x02\x02\x02jk\b\n\x04\x02k\x15\x03\x02\x02\x02lm\x07=\x02\x02" +
		"m\x17\x03\x02\x02\x02np\t\x06\x02\x02on\x03\x02\x02\x02pq\x03\x02\x02" +
		"\x02qo\x03\x02\x02\x02qr\x03\x02\x02\x02rs\x03\x02\x02\x02st\b\f\x05\x02" +
		"t\x19\x03\x02\x02\x02u\x7F\x05\x04\x02\x02v\x80\x05\x04\x02\x02wy\v\x02" +
		"\x02\x02xw\x03\x02\x02\x02y|\x03\x02\x02\x02z{\x03\x02\x02\x02zx\x03\x02" +
		"\x02\x02{}\x03\x02\x02\x02|z\x03\x02\x02\x02}~\n\x07\x02\x02~\x80\x05" +
		"\x04\x02\x02\x7Fv\x03\x02\x02\x02\x7Fz\x03\x02\x02\x02\x80\x1B\x03\x02" +
		"\x02\x02\x81\x83\x05\x14\n\x02\x82\x84\x05\x10\b\x02\x83\x82\x03\x02\x02" +
		"\x02\x83\x84\x03\x02\x02\x02\x84\x85\x03\x02\x02\x02\x85\x89\x05\x14\n" +
		"\x02\x86\x88\v\x02\x02\x02\x87\x86\x03\x02\x02\x02\x88\x8B\x03\x02\x02" +
		"\x02\x89\x87\x03\x02\x02\x02\x89\x8A\x03\x02\x02\x02\x8A\x8C\x03\x02\x02" +
		"\x02\x8B\x89\x03\x02\x02\x02\x8C\x8E\x05\x14\n\x02\x8D\x8F\x05\x10\b\x02" +
		"\x8E\x8D\x03\x02\x02\x02\x8E\x8F\x03\x02\x02\x02\x8F\x90\x03\x02\x02\x02" +
		"\x90\x91\x05\x14\n\x02\x91\x1D\x03\x02\x02\x02\x92\x93\x07<\x02\x02\x93" +
		"\x1F\x03\x02\x02\x02\x94\x95\x07<\x02\x02\x95\x96\x07<\x02\x02\x96\x97" +
		"\x03\x02\x02\x02\x97\x98\b\x10\x04\x02\x98!\x03\x02\x02\x02\x99\x9A\x05" +
		"\x06\x03\x02\x9A\x9B\x03\x02\x02\x02\x9B\x9C\b\x11\x03\x02\x9C#\x03\x02" +
		"\x02\x02\x9D\x9F\t\x06\x02\x02\x9E\x9D\x03\x02\x02\x02\x9F\xA0\x03\x02" +
		"\x02\x02\xA0\x9E\x03\x02\x02\x02\xA0\xA1\x03\x02\x02\x02\xA1\xA2\x03\x02" +
		"\x02\x02\xA2\xA3\b\x12\x05\x02\xA3%\x03\x02\x02\x02\xA4\xA5\x07/\x02\x02" +
		"\xA5\xA6\x07@\x02\x02\xA6\'\x03\x02\x02\x02\xA7\xA8\x070\x02\x02\xA8\xA9" +
		"\x070\x02\x02\xA9\xAA\x070\x02\x02\xAA)\x03\x02\x02\x02\xAB\xAC\x07B\x02" +
		"\x02\xAC\xAD\x07p\x02\x02\xAD\xAE\x07c\x02\x02\xAE\xAF\x07o\x02\x02\xAF" +
		"\xB0\x07g\x02\x02\xB0+\x03\x02\x02\x02\xB1\xB2\x07B\x02\x02\xB2\xB3\x07" +
		"r\x02\x02\xB3\xB4\x07c\x02\x02\xB4\xB5\x07t\x02\x02\xB5\xB6\x07c\x02\x02" +
		"\xB6\xB7\x07o\x02\x02\xB7-\x03\x02\x02\x02\xB8\xB9\x07*\x02\x02\xB9/\x03" +
		"\x02\x02\x02\xBA\xBB\x07+\x02\x02\xBB1\x03\x02\x02\x02\xBC\xBD\x07.\x02" +
		"\x02\xBD3\x03\x02\x02\x02\xBE\xBF\x07#\x02\x02\xBF5\x03\x02\x02\x02\xC0" +
		"\xC2\v\x02\x02\x02\xC1\xC0\x03\x02\x02\x02\xC2\xC3\x03\x02\x02\x02\xC3" +
		"\xC4\x03\x02\x02\x02\xC3\xC1\x03\x02\x02\x02\xC47\x03\x02\x02\x02\xC5" +
		"\xC6\x07,\x02\x02\xC6\xC7\x071\x02\x02\xC7\xC8\x03\x02\x02\x02\xC8\xC9" +
		"\b\x1C\x06\x02\xC99\x03\x02\x02\x02\x11\x02\x03@IM_dqz\x7F\x83\x89\x8E" +
		"\xA0\xC3\x07\x04\x03\x02\t\x03\x02\t\x07\x02\b\x02\x02\x04\x02\x02";
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!SQLLexer.__ATN) {
			SQLLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(SQLLexer._serializedATN));
		}

		return SQLLexer.__ATN;
	}

}

